PACK-Baustein

Kurz-Information

Name

PACK

→POE-Typ

→Funktion

Kategorie

Standard (non-safe), ConvertEnh

Konform zur →IEC-Norm

(Plus) nicht in IEC-Norm vorgesehen

Grafische Schnittstelle

Verfügbar ab

Version 1.50.0 (für Neuron Power Engineer) – Anfangsvariante

Version 3.2.5 (für Bibliothek Standard) – Funktionalität für Plattformen korrigiert, die durch Systemintegrator erstellt werden

Version 3.8.0 (für Bibliothek Standard) – geändertes Verhalten, wenn der Ergebniswert am Eingang eines allgemeinen Datentyps anliegt

Version 3.8.0 (für Bibliothek Standard (non-safe)): Baustein in diese Bibliothek verschoben

Funktionalität

Der Baustein liefert als Ergebnis die übertragenen Werte der Bytes, die an den Eingängen IN0IN7 anliegen. Bei Zielsystemen, die Daten im Little-→Endian-Format speichern, wird das Byte vom Eingang IN0 auf das niederwertigste Byte des Ergebniswerts übertragen, das Byte vom Eingang IN7 auf das höchstwertige Byte des Ergebniswerts. Bei Zielsystemen, die Daten im Big-Endian-Format speichern, ist das Verhalten umgekehrt.

Spezialfälle (siehe unter "Beispiel für Verwendung im ST-Editor"):

  • Falls die Größe des Ergebnisdatentyps (Anzahl der Bytes, durch die der Datentyp repräsentiert wird) > als die Anzahl der anliegenden Eingangsbytes ist, bleiben die höherwertigen Bytes des Ergebniswerts uninitialisiert.
    Bei BOOL-Werten für den Ergebniswert wird bei jedem Wert ≠ 0 am Eingang IN0 der Wert TRUE geliefert.

  • Falls mehr Eingangsbytes anliegen, als der Ergebnisdatentyp aufnehmen kann, werden nur die niederwertigen Eingangsbytes an den Ergebniswert übertragen. Bei Zielsystemen, die Daten im Little-Endian-Format speichern, sind dies die Eingänge, die weiter oben am Baustein liegen.

Der Baustein meldet einen Fehler, wenn der Ausgang an einem Baustein-Eingang eines allgemeinen Datentyps anliegt (z.B. dem Eingang eines TO_INT-Bausteins). Dieses Verhalten tritt aufgrund der Anweisung anyOutputMustBeConcreteResolved in der Schnittstelle des PACK-Bausteins auf. Siehe unter "Eigenschaften für das Implementieren von Vendor-Bausteinen" für Details zu dieser Anweisung. Um einen derartigen Fehler zu beheben, können Sie eine Hilfsvariable deklarieren und die Aufrufe dieser Hilfsvariablen zuweisen (siehe unter "Typisierung von Ausdrücken" für Details zu dieser Abhilfe für eine verschachtelte Verwendung von PACK zusammen mit anderen Bausteinen).

Eingänge, Ergebniswert

 

Bezeichner

→Datentyp

Beschreibung

Eingänge:

IN0

BYTE

1. Wert

IN1

BYTE

2. Wert

... (ausziehbar bis)

IN7

BYTE

8. Wert

Ergebniswert:

REALLREALUSINTUINTUDINTULINTSINTINTDINTLINTTIMEBOOLBYTEWORDDWORDLWORDDATE_AND_TIMEDATE oder TIME_OF_DAY

 

Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.

Informieren Sie sich unter:

Beispiel für Verwendung im ST-Editor

Das folgende Beispiel gilt für Zielsysteme, die Daten im Little-Endian-Format speichern. Die berechneten Werte werden mit Hilfe des Assert-Bausteins ausgewertet.

FUNCTION_BLOCK ExamplePack
  VAR
    result1, result2 : DWORD;
    result2a : WORD;
  END_VAR
  result1 := PACK(IN0 := 16#01, IN1 := 16#02);                                  (* DWORD = 4 bytes *)
  result2 := PACK(IN0 := 16#01, IN1 := 16#02, IN2 := 16#04, IN3 := 16#07);
  result2a := PACK(IN0 := 16#01, IN1 := 16#02, IN2 := 16#03, IN3 := 16#04);     (* WORD = 2 bytes *)
 
  Assert(result1 = 16#0201);       (* '16#0201' equals to '513' (decimal). *)
  Assert(result2 = 16#07040201);   (* '16#07040201' equals '117_703_169' (decimal). *)
  Assert(result2a = 16#0201);      (* '16#0201' equals '513' (decimal). *)
END_FUNCTION_BLOCK  

Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.